﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.UI;
using BOL;
using BOL.Comun;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;

namespace UILGestion.Admin.UILocalizacion
{
    public partial class UILocalizacionEditForm : System.Web.UI.Page
    {

        public UILocalizacionEditForm()
        {
            bol = new UILocalizacionBL();
            _db = new dbGestionDataContext(Parametros.strConnString);
        }

        private UILocalizacionBL bol;
        private dbGestionDataContext _db;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                     type.Value = (string)Request.QueryString["type"];
                     internalID.Value = (string)Request.QueryString["id"];
                     idEtapa.Value = (string)Request.QueryString["idEtapa"];
                     paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri;
                     menuCtrl1.loadMenuSeguridad();
                     FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }


        private void Insert()
        {
              internalID.Value=bol.Add(_db,descripcionTXT.Text,
                                        comentarioTXT.Text,
                                        areTXT.Text.ToDecimal().Value,
                                        etapaDDL.SelectedValue.ToInt()
                                        ).ToString();

              }

        private void Update()
        {
            bol.Update(internalID.Value.ToInt(),
                            descripcionTXT.Text,
                            comentarioTXT.Text,
                            areTXT.Text.ToDecimal().Value,
                             etapaDDL.SelectedValue.ToInt(),
                            idimagenTXT.Text.ToInt2());

            
        }

        protected void button(object sender, EventArgs e)
        {
            
            try
            {

                if ((sender as Button).ID ==saveBTN.ID)
                {

                    if (type.Value == "E")   { Update(); }
                    if (type.Value == "A")    {Insert(); }

                    Response.Redirect("~/Admin/UILocalizacion/UILocalizacionReadForm.aspx?id={0}".Fmt(internalID.Value), true);
                   
                }
                if ((sender as Button).ID == cancelarBTN.ID)
                {
                    Response.Redirect(paginaAnt.Value, true);
                }
                if ((sender as Button).ID ==refreshBTN.ID)
                {
                    FormatForm();
                }

                if ((sender as Button).ID == addImagenBTN.ID)
                {

                    if (archivoFileLoad.HasFile)
                    {
                        ArchivoBL archivoBol = new ArchivoBL();

                        var archivo = archivoBol.AddLocalizacionImagen(archivoFileLoad, internalID.Value.ToInt());

                        idimagenTXT.Text = archivo.idInternal.ToString();
                    }
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }




        }
        private void ShowAllComboBox()
        {

            proyectoDDL.DataTextField = "descripcion";
            proyectoDDL.DataValueField = "idInternal";

            proyectoDDL.DataSource = new ListValueBL().GetProyectoVentaXEmpresa();
            proyectoDDL.DataBind();


            etapaDDL.DataTextField = "descripcion";
            etapaDDL.DataValueField = "idInternal";
            if (type.Value == "A")
                loadEtapa();
           

        }


        private void loadEtapa()
        {
            etapaDDL.DataSource = new ListValueBL().GetEtapaVentaXProyecto(proyectoDDL.SelectedValue.ToInt());
            etapaDDL.DataBind();
        }

        private void Load()
        {
            DAL.UILocalizacion localizacion = DbUtil.Db.UILocalizacions.Single(p => p.idInternal == internalID.Value.ToInt());

            proyectoDDL.SelectedValue = localizacion.Etapa.idProyecto.ToString();
            loadEtapa();
            
            etapaDDL.SelectedValue = localizacion.idEtapa.ToString();
            descripcionTXT.Text = localizacion.descripcion;
            comentarioTXT.Text = localizacion.comentario;
            areTXT.Text = localizacion.area.ToString();

            if (localizacion.idArchivo != null)
            {
                idimagenTXT.Text = localizacion.idArchivo.ToString();
            }

        }

        private void FormatForm()
        {

            //--------------------
            //int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
            //    idEmpleadoEmisor,
            //    11, //Proveeedor
            //    2); //lectura
            ////------------------------- 
            //// los paneles presentes en el formulario
            //pnlMain.Visible = true;
            ShowAllComboBox();
                
            areTXT.Text="0.00";
                

            if (type.Value == "E")
            {
                Load();
                
            }
            if (type.Value == "A")
            {
                
                
                
                if (idEtapa.Value != String.Empty)
                {
                    var etapa = DbUtil.Db.Etapas.Single(p => p.idInternal == idEtapa.Value.ToInt());

                    proyectoDDL.SelectedValue = etapa.idProyecto.ToString();
                    proyectoDDL.Enabled = false;
                    loadEtapa();
                    etapaDDL.SelectedValue = idEtapa.Value;
                    etapaDDL.Enabled = false;
                }
            }
        
        
           

        }

        protected void proyectoDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                loadEtapa();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }


      
      

        
       
    }
}